1.問題背景
我們在開發網站或API時,通常程式都跑在自己的電腦,這時候你能自己測試沒問題,但如果想要給外面的人或外部服務來存取,就會遇到這些難題:
(一)固定IP:很多家庭網路沒有固定IP,每次斷線重連IP都變了。
(二)Port Forwarding:要進去路由器設定,把某個Port打開,還要會設定NAT/防火牆。對新手來說很麻煩。
(三)安全性:即使你設定成功,直接把自己電腦的服務暴露在公網也有風險。
2.ngrok的角色
ngrok就是來解決這個問題的工具。
它的核心功能是:
(一)幫你建立一條安全的隧道(tunnel),把本地的localhost映射到一個ngrok提供的公開網址
(二)不用自己去設定路由器或防火牆。
(三)免費版就能快速上手,付費版還能綁定自訂域名。
3.為什麼需要ngrok?舉幾個情境
(一)LINE Bot/Messenger Bot
官方伺服器會推送訊息到你的機器,但它無法直接存取localhost。有了ngrok,就能把你的Bot測試伺服器暴露出來。
(二)GitHub Webhook/Stripe Webhook
這些服務在發生事件(push code、付款成功)時,會呼叫你指定的API。
沒有ngrok,你只能部署到雲端測試,非常麻煩。
(三)Demo/學習分享
想臨時把自己做的小網站給朋友看?開個ngrok就行了。
(四)IoT測試
假設你用樹莓派或Arduino做了個小伺服器,想用手機直接呼叫控制。用ngrok可以很快實現。
4.視覺化範例